#ifndef CURVEPROPERTIES_H
#define CURVEPROPERTIES_H

#include <vector>
#include <QPointF>
#include <QColor>

using namespace std;

class CurveProperties
{
private:
    /* Fields. */
    QColor mouseover_color;
    QColor selected_point_color;
    QColor point_color;
    QColor curve_color;
    QColor polyline_color;
    QColor selection_color;
    QColor selection_border_color;

    float curve_width;
    float point_radius;

    int no_of_segments;
    vector< int > selected_points;

    bool draw_curve;
    bool draw_control_points;
    bool draw_control_polyline;
    bool draw_convex_hull;
    bool draw_selection_box;

    QPointF topLeft;
    QPointF bottomRight;

public:
    /* Constructor. */
    CurveProperties();

    QColor MouseOverColor( ) const;
    QColor SelectedPointColor( ) const;
    QColor PointColor( ) const;
    QColor CurveColor( ) const;
    QColor PolylineColor( ) const;
    QColor SelectionColor( ) const;
    QColor SelectionBorderColor( ) const;

    float CurveWidth( ) const;
    float PointRadius( ) const;

    void SetNumberOfSegments( int num );
    int  NumberOfSegments( ) const;

    void ActivateCurve();
    void DeactivateCurve();

    void ShowCurve();
    void HideCurve();

    void ShowControlPoints();
    void HideControlPoints();

    void ShowControlPolyline();
    void HideControlPolyline();

    void ShowConvexHull();
    void HideConvexHull();

    void SetBorders( QPointF left, QPointF right, QPointF top, QPointF bottom );
    QPointF* Borders( ) const;

};

#endif // CURVEPROPERTIES_H
